	
VB/ISAM for Windows	June 1996
Ultra-compact. The DLLs are under 75 KB! 
If you plan to deliver your application 
electronically, SIZE COUNTS!

Blazing performance. In tests run in 
December 1993, it outperformed Access 
by factors of up to 24 to 1. If you're 
processing a lot of data, SPEED COUNTS!

Simple interface. The user manual is 60 
pages long, and most applications use 
only half of the 16 functions.  A clean 
alternative to over engineered database 
management software. RAPID 
DEVELOPMENT COUNTS!

Ultimate reliability. Reliable as an anvil in 
thousands of critical corporate 
applications and successful commercial 
software products.  Some files are 
hundreds of megabytes in size and 
accessed by hundreds of users 
simultaneously. RELIABILITY COUNTS!

High capacity. VB/ISAM can fill a single 
dataset up to 512 MB in size, and using 
multiple dataset structures, VB/ISAM can 
access a total database virtually unlimited 
in size.  We have developed such huge 
databases for customers under contract, 
so we know it can be done. CAPACITY 
COUNTS!

Outrageous flexibility.  With external 
connectivity, objects such as video, 
sound, picture, or any other type of large 
objects you can dream up can be 
accessed. We have developed such 
databases for customers under contract, 
so we know it can be done. FLEXIBILITY 
COUNTS!

CALL US FOR A COMPANY PROFILE.
WE DO PROFESSIONAL CONTRACT WORK.

FEATURES:
  Up to 80 indexes, stored in the same DOS 
file as the data records.
  Index sort-order and file space 
automatically maintained with every 
add/change/delete.
  Variable-length fields and records to 32 
KB; files   to 512 MB.
  Both single-user (VB/ISAM MX) and multi-
user/network (VB/ISAM MU) versions 
available; MU version includes 
semaphores for record locking, runs on 
any network, and automatically releases 
locks if a process dies.
  File-compatible MX and MU versions for 
VB/Win, VB/DOS, PDS 7.1 Libraries, 
C/C++/Pascal (Windows).
  CB/ISAM has support for Pascal & 
Borland's DELPHI.
  No runtime royalties. You can ship our 
runtime DLL without limit.

MAIN FUNCTIONS:  
VmxCreate (FileName$, ..., 
RecordFormatAndIndexDescription$)
Creates a new VB/ISAM file, establishing 
the record format and index selection.  
Record fields may be any Visual Basic 
data type, including variable-length 
strings, but not Variants. 

VmxOpen (FileName$, ..., 
ReturnedFileNum%)
Opens a VB/ISAM file, returning a 
reference number (or "handle").

VmxPut (FileNum%, ..., RecordVariable, 
ADD_ONLY / REPLACE_ONLY / EITHER)
Adds or changes a record.  
RecordVariable is a Visual Basic 
"Type/EndType" variable; its components 
(named variables of any data type) are the 
record fields.  The contents of whichever 
string fields you had identified, in 
VmxCreate, as index fields, are used to 
immediately update the indexes.

VmxDelete (FileNum%, 
PrimaryIndexKey$)
Deletes a record.  The primary key is the 
unique record identifier.  All indexes are 
updated. 

VmxGet (FileNum%, Index%, Lookup, 
SearchString$, ..., RecordVariable)
Sets a pointer to the insertion point of 
your SearchString$ in the specified index.  
If there's a match, it also retrieves the 
corresponding record into RecordVariable.

VmxGet (FileNum%, Index%, Next, ..., 
RecordVariable)
Steps forward to the next entry in the 
specified index and retrieves the 
corresponding record.  Further parameters 
allow for optional loop-control assistance, 
by testing the encountered index entry 
against a comparison value, with a choice 
of Equals, Begins With, Less Than, etc., 
and having the function return "OK" only 
if the test succeeds.  After appropriately 
initializing the index pointer with 
VmxGet/Lookup, you can easily loop to 
retrieve all Smiths, all part numbers 
beginning with XYZ123, etc.

OTHER FUNCTIONS:  
VmxGet/Previous, VmxGet/Current: 
Similar to VmxGet/Next.
VmxBOF, VmxEOF: Go to the 
beginning/end of an index.
VmxClose, VmxKill: Close/delete a file.  
Also, VmxFlush performs a quick 
save-to-disk.
VmxEncode, VmxDecode: Convert 
between Type variables and variable-
length strings; useful if you want to 
store "subrecords" of differing 
formats into your data records.
VmxWriteNote, VmxReadNote: Maintain 
an optional 1,000-byte mini-database 
of named strings within a VB/ISAM 
file, for annotations, data version 
control, etc..
VmxInfo: Get file parameters and 
statistics.
VmxReturnCode: Translate the integer 
codes returned by the other functions 
into descriptive error messages, for 
convenience in debugging.  Examples:  
0 = "OK",  1 = "Not Found".

FREQUENTLY ASKED QUESTIONS:  
Is VB/ISAM the same as the ISAM that comes 
with VB/DOS Professional Edition?  No; 
the term "ISAM" is generic, standing for 
"Indexed Sequential Access Method."  
Although their general functionality is 
similar, there are many ISAMs.  VB/ISAM 
is a trademark of Software Source.

How easy is it to integrate VB/ISAM into my 
VB program?  Unlike some other DLL 
products, VB/ISAM for Windows was 
designed specifically as a convenient 
extension to the Visual Basic 
programming language.  The product 
includes a .BAS file containing all function 
declarations, symbolic constants for 
option parameters and return codes, etc.  
Just add this .BAS module to your VB 
program, and then call the functions as if 
they were a part of VB.

How sophisticated is VB/ISAM's indexing?  
Each of the index fields in your record (up 
to 80) can be up to 250 bytes long.  You 
can easily create multi-field indexes (for 
example, LastName + FirstName).  You 
can make "sparse" indexes, in which only 
selected records are represented, by 
simply leaving fields empty when you 
write a record.  VB/ISAM avoids 
keyboarding errors by normalizing index 
searches for upper/lower case, 
leading/trailing spaces, and multiple 
embedded spaces.  It keeps separate 
pointers for each index, and moves the 
pointers only with VmxGet and VmxBOF/ 
EOF calls; you can add, change, and even 
delete records without losing your place. 

How can I output to Crystal Reports(tm)?
Most of our customers are refugees from
the Access camp,saying Access is too slow.
They see major speed improvements by
switching to VB/ISAM. If you are not
concerned about application size, there is
one instance where you may want to move
records from VB/ISAM to an Access table.
Printing is such a slow process anyway, that
you can relegate Access to being a minimal,
final stage print buffer. You can then use the
interface between Access and Crystal
Reports(tm) for printing.

VB/ISAM New and Auxiliary Products
VB/ISAM 4032 for Windows (32-Bit for 
VB4) represents a significant 
generalization of our product line. 
Previous versions of VB/ISAM had one 
DLL for development and another for 
runtime, one DLL for single user and 
another for multi-user, one DLL for 
interfacing with Visual Basic and another 
for interface with C, C++, Pascal, 
Delphi, or Power Basic. With VB/ISAM 
4032, all these DLLs have been imploded 
into a single DLL that serves all of these 
functions. VB/ISAM 4016 (16-Bit for 
VB4) is also included with VB/ISAM for 
Windows VB4.

The VB/ISAM Tool Kit, or VTK, is a 
bundle of tools for developer use.  It 
includes the Data Editor for editing a 
dataset, Vtool for rebuilding a dataset, 
Field Pack for manipulating fields and 
loading data, and Dskel for salvaging 
data.  The VTK costs much less than the 
individual tools.

VTOOL allows a developer to validate,
repair, rebuild, and do text searches
very quickly. Vtool includes both a
utility to perform these functions and
a DLL callable from VB3 to allow
inclusion of these maintenance and
search functions inside a user developed
application.

The DATA EDITOR provides a convenient 
way of accessing VB/ISAM datasets as 
defined by their standard format strings. 
This can be helpful for debugging, 
allowing you to verify what is in each 
record. We also offer the source code to 
the DATA EDITOR for $200. This permits 
a rapid startup of your project by starting 
with an already functioning application 
(the DATA EDITOR) which can be  
successively modified to include required 
application features.

DSKEL allows validation of dataset 
integrity and reclamation of data from 
datasets damaged by system failures 
such as power outages. VB/ISAM is 
designed to maximize dataset availability 
by continuing to allow access to 
undamaged portions of a dataset, even 
though another section of the dataset 
may be damaged.  Ideally, DSKEL should 
be used in conjunction with well designed 
backup and recovery processes. Datasets 
should be verified before being copied to 
backup, insuring undamaged backup files. 
Techniques such as transaction logging 
can be combined with backup datasets 
for dataset reconstruction. DSKEL will 
report dataset errors it finds. DSKEL can 
be used to directly salvage information 
not available from other sources.

FIELD PACK, a field manipulation tool, is now 
available in a VB4 32-Bit version.  The 32-Bit 
version is now included with the VB3 version. 
Read, write, insert, and remove variable-
length fields delimited by any sequence of 
characters (not just a single character).  Pack 
and unpack any series of data items into and 
out of variable-length strings.  Store arrays of 
different numbers of elements into database 
records.  Perform a variety of useful string 
operations, including left, right, and center 
justification with a choice of fill character. 
Helps load fields from flat files.

FACTORY DIRECT PRICE LIST
VB/ISAM MU for Windows	$169.95
    (For Visual Basic Windows multi-user ) 
    (Choose VB3 or VB4)
VB/ISAM MX for Windows	$  99.95
    (For Visual Basic Windows single user) 
    (Choose VB3 or VB4)
CB/ISAM MU for Windows	$169.95
    (For C/C++/Pascal/Delphi Windows multi-user)
CB/ISAM MX for Windows	$  99.95
    (For C/C++/Pascal/Delphi Windows single-user)
VB/ISAM MU for DOS		$169.95
    (For Visual Basic DOS multi-user)
VB/ISAM MU Combo Pack Plus	$459.00
    (VB3 and VB4 and CB MU and VTK and DE+Dremake Sources)
VB/ISAM MU Pro Pack Plus	$359.00
    (Choose VB3 or VB4 and CB MU and VTK)
VB/ISAM MU Pro Pack		$259.00
    (Choose VB3 or VB4 or CB MU	 and VTK)
VTK VB/ISAM Tool Kit		$159.00
    (DE and Vtool and Dskel and FP = VTK)
Data Editor and Source		$200.00
    (Windows/VB3)
Dremake and Source		$100.00
    (DOS for all VB/ISAM datasets)
Vtool Rebuild Validate Search	$  79.00
    (Windows/VB3)
Dataset Editor			$ 69.00
    (Windows/VB3)
Dskel Data Salvage		$  59.00
    (DOS for all VB/ISAM Data sets)
FieldPack			$  49.00
    (Windows/VB3+VB4 32)
PDS 7.1 Lib			$  25.00
    (Needs VB/ISAM for VBDOS)
VB/ISAM extra manuals		$  20.00



All products are runtime royalty-free.
All prices are in US. dollars. 
 
Factory-direct orders by VISA, MasterCard, 
AMEX, COD, or prepaid check:
(Foreign checks or money orders must be in 
US dollars drawn on a US bank.)
$ 99.95 for any MX (single user) product (add 
shipping/handling).
$169.95 for any MU (multi-user/network) 
product (add shipping/handling).
 
Shipping/handling charges
(California add 7.25% tax, plus local tax): 
US orders - Priority Mail $8.00, Compuserve 
$5 for DE, Vtool, Dskel, FP
Foreign orders (airmail): $15.00. FedEx or 
COD: CALL.

SOFTWARE SOURCE NOW HAS VB/ISAM 
 for Windows AVAILABLE ON COMPUSERVE.
To download VB/ISAM products: GO VBPJFO,
 select file keyword VBISAM.
To purchase VB/ISAM products:  GO SWREG, 
register, select keyword VBISAM.
To activate your license,
    call  Software Source (408)363-0985, or
    fax   Software Source (408)363-0987, or
    email Software Source 75443,134

Software Source
835 Blossom Hill Rd #210
San Jose, CA 95123-2703

Windows Magazine, August
1993, Page 186.  REVIEWERS' 
NOTEBOOK:


FAST VISUAL BASIC DATA ACCESS
VB/ISAM IS A SET OF INCREDIBLY FAST 
database functions for Visual Basic 1.0 
and 2.0 [VB3 & VB4].  VB/ISAM (the last 
part is an acronym for Indexed Sequential 
Access Method) lets you access records 
by index lookup or sequentially, by 
moving to the next or previous record.  
Inexact searches, when no data is found, 
place a pointer so that you need move 
only to the next record to find the closest 
match.  The Update Protection option lets 
you specify "add only" or "replace only" 
during record writes.
The functions handle fixed and variable 
length strings, fields, and keys, and 
records of any length up to 64KB; you 
can mix different record types in the 
same file.  VB/ISAM allows you to include 
arrays of different numbers of elements in 
your records.  It can manage up to 80 
index keys, each up to 250 bytes long, all 
automatically maintained.  The functions 
disregard uppercase lowercase 
differences: in order to save space, all 
index keys are stored in lowercase with 
spaces removed.
The DLL takes a minuscule 50KB for 
the multi-user version, 47KB for the 
single user version.  Unlike most 
competing database add-on products for 
VB, VB/ISAM does not use custom 
controls.  Instead, you use its set of 
functions to manipulate records.  
Fortunately, there are only 16 functions 
to learn (the multi-user version also has 
two functions to handle file [and record] 
locking and unlocking).  There is no 
database pack function because VB/ISAM 
keeps its file space constantly organized.  
The files have their own format; the 
library is not meant to support industry-
standard dBASE or Paradox files.
The add-on comes with an excellent 
user's guide that helps you plan your 
database, avoid potential trouble spots, 
and use the functions properly.  It's the 
first user's guide I've seen for a 
programming product that uses humor 
well.  Although the sample application 
provided is simple, it illustrates the major 
features:  a printed example would be a 
welcome addition.
For the price, the excellent and friendly 
technical support, and a user's manual 
that tells it like it is with a chuckle, you 
can't go wrong with this well-designed 
and speedy add-on.

VB/ISAM by Software Source
Price : $99.95; multi-user Version $169.95
(408) 363-0985; fax (408) 363-0987
-James E. Powell
